home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 235_01 / ovfdisp.c < prev    next >
Text File  |  1987-06-16  |  9KB  |  270 lines

  1. /*  025  17-Jan-87  ovfdisp.c
  2.  
  3.         Copyright (c) 1987 by Blue Sky Software.  All rights reserved.
  4. */
  5.  
  6. #include "ov.h"
  7.  
  8. #define V_bar (0xba)
  9. #define H_bar (0xcd)
  10.  
  11. #define INFO_COLS (60)                 /* extra file info uses 60 xtra cols */
  12.  
  13. extern FILE_ENT files[];
  14. extern struct window cw;               /* the current widow structure */
  15. unsigned char help_display;            /* NZ if help is active */
  16.  
  17. char *mmddyy();
  18. unsigned long alloc_siz(unsigned long, unsigned int);
  19.  
  20.  
  21. /******************************************************************************
  22.  **                   S E T U P _ F I L E _ S C R                            **
  23.  *****************************************************************************/
  24.  
  25. setup_file_scr() {     /* setup the static file display screen image */
  26.  
  27.    clr_scr();                          /* start off with clear screen */
  28.  
  29.    setvattrib(DIS_TEXT);
  30.  
  31.    disp_str_at("\xc9\xcd Volume \xcd\xcd\xcb\xcd Path ",VOL_ROW-1,0);
  32.    disp_rep(H_bar,SCREEN_COLS-21);
  33.    disp_char_at(0xbb,VOL_ROW-1,SCREEN_COLS-1);
  34.  
  35.    disp_char_at(V_bar,VOL_ROW,0);
  36.    disp_char_at(V_bar,VOL_ROW,PATH_COL-1);
  37.    disp_char_at(V_bar,VOL_ROW,SCREEN_COLS-1);
  38.  
  39.    disp_char_at(V_bar,VOL_ROW+1,0);
  40.    disp_rep(' ',PATH_COL-2);
  41.    disp_char_at(0xc8,VOL_ROW+1,PATH_COL-1);
  42.    disp_rep(H_bar,SCREEN_COLS-14);
  43.    disp_str_at("\xcb\xcd Files ",VOL_ROW+1,19);
  44.    disp_char_at(0xb9,VOL_ROW+1,SCREEN_COLS-1);
  45.    disp_str_at("\xcb\xcd Selection ",VOL_ROW+1,61);
  46.  
  47.    disp_str_at("\xba            TOTAL \xba SELECTED:       FILES             BYTES \xba MASK:",
  48.       FILE_STAT_ROW,0);
  49.    disp_char_at(V_bar,FILE_STAT_ROW,SCREEN_COLS-1);
  50.    disp_str_at("\xba            FREE  \xba TAGGED:         FILES             BYTES \xba ATRS:",
  51.       TAG_STAT_ROW,0);
  52.    disp_char_at(V_bar,TAG_STAT_ROW,SCREEN_COLS-1);
  53.  
  54.    disp_char_at(0xc8,UP_BOUND,0);
  55.    disp_rep(H_bar,SCREEN_COLS-2);
  56.    disp_char_at(0xca,UP_BOUND,19);
  57.    disp_char_at(0xca,UP_BOUND,61);
  58.    disp_char_at(0xbc,UP_BOUND,SCREEN_COLS-1);
  59.  
  60.    disp_status();              /* display the status line - resets vid attrib */
  61. }
  62.  
  63.  
  64. /******************************************************************************
  65.  **                        D I S P _ F I L E                                 **
  66.  *****************************************************************************/
  67.  
  68. #pragma check_stack-
  69.  
  70. int ALTCALL
  71. disp_file(fp,is_cur)   /* display one file name with approiate video attrib */
  72. register struct file_ent *fp;
  73. int is_cur;
  74. {
  75.    register int fast;
  76.    int fillsiz, i, is_pm, fnlen, va;
  77.  
  78.    /* set the video attribute to use */
  79.  
  80.    va = is_cur ? DIS_HIGH : (fp->flags & TAGGED ? DIS_TAGD : DIS_NORM);
  81.    if (va != DIS_NORM)
  82.       setvattrib(va);
  83.  
  84.    if (fnlen = strlen(fp->name)) {
  85.       disp_str(fp->flags & TAGGED ? "\x1A " : "  ");   /* tagged flag gets -> */
  86.       disp_str(fp->name);                              /* display the name */
  87.       if (fp->flags & DIR) {                           /* \ after dir names */
  88.          disp_char('\\');
  89.          fnlen++;
  90.       }
  91.    }
  92.  
  93.    disp_rep(' ',cw.maxlen - fnlen);    /* blank fill the name field */
  94.  
  95.    /* display extended file info if active */
  96.  
  97.    if (cw.info_display && fnlen) {
  98.  
  99.       out_long(fp->size,10,' ');       /* display used/allocated sizes */
  100.       out_long(alloc_siz(fp->size,cw.drivep->clustersiz),11,' ');
  101.  
  102.       disp_str("   ");                 /* 3 blanks before date */
  103.       disp_str(mmddyy(fp->date));
  104.  
  105.       disp_str("   ");                 /* 3 blanks before time */
  106.  
  107.       i = ((fast = fp->time) & 0xF800) >> 11;  /* i = hours */
  108.  
  109.       if (is_pm = (i > 12))            /* is it AM or PM? */
  110.          i -= 12;
  111.  
  112.       out_int(i,2,' ');                /* out go the hours */
  113.       disp_char(':');
  114.  
  115.       out_int((fast & 0x07E0) >> 5,2,'0');     /* now the minutes */
  116.       disp_char(':');
  117.  
  118.       out_int((fast & 0x1F) << 1,2,'0');       /* seconds */
  119.  
  120.       disp_str(is_pm ? " pm  " : " am  ");
  121.  
  122.       disp_attrib(fp->flags);          /* display the R H S A attributes */
  123.  
  124.       disp_str(fp->flags & DIR ? " DIR" : "    ");   /* do the DIR attrib */
  125.  
  126.       fillsiz = cw.colsiz - cw.maxlen - INFO_COLS - 2;
  127.  
  128.    } else              /* no extended file info display */
  129.  
  130.       fillsiz = cw.colsiz - cw.maxlen - 2;
  131.  
  132.    disp_rep(' ',fillsiz);              /* blank fill the column */
  133.  
  134.    if (va != DIS_NORM)                 /* restore video attrib if not normal */
  135.       setvattrib(DIS_NORM);
  136. }
  137. #pragma check_stack+
  138.  
  139.  
  140. /******************************************************************************
  141.  **                      D I S P _ A T T R I B                               **
  142.  *****************************************************************************/
  143.  
  144. #pragma check_stack-
  145.  
  146. disp_attrib(attribs)   /* display the attributes in R H S A format */
  147. register int attribs;
  148. {
  149.    static char *no_at = " .";
  150.  
  151.    disp_str(attribs & RDONLY  ? " R" : no_at);
  152.    disp_str(attribs & HIDDEN  ? " H" : no_at);
  153.    disp_str(attribs & SYSTEM  ? " S" : no_at);
  154.    disp_str(attribs & ARCHIVE ? " A" : no_at);
  155. }
  156. #pragma check_stack+
  157.  
  158. /******************************************************************************
  159.  **                    D I S P _ V O L _ S T A T S                           **
  160.  *****************************************************************************/
  161.  
  162. int ALTCALL
  163. disp_vol_stats() {
  164.  
  165.    gotorc(FILE_STAT_ROW,VOL_STAT_COL);
  166.    out_long(cw.drivep->vol_size,10,' ');
  167.    gotorc(TAG_STAT_ROW,VOL_STAT_COL);
  168.    out_long(cw.drivep->vol_free,10,' ');
  169. }
  170.  
  171.  
  172. /******************************************************************************
  173.  **                  D I S P _ F I L E _ S T A T S                           **
  174.  *****************************************************************************/
  175.  
  176. int ALTCALL
  177. disp_file_stats() {
  178.  
  179.    gotorc(FILE_STAT_ROW,NUM_FILES_COL);
  180.    out_int(cw.num_files,5,' ');
  181.    gotorc(FILE_STAT_ROW,SPACE_USED_COL);
  182.    out_long(cw.files_size,10,' ');
  183.    gotorc(TAG_STAT_ROW,NUM_FILES_COL);
  184.    out_int(cw.num_tagged,5,' ');
  185.    gotorc(TAG_STAT_ROW,SPACE_USED_COL);
  186.    out_long(cw.tag_size,10,' ');
  187. }
  188.  
  189.  
  190. /*****************************************************************************
  191.                            D I S P _ P A T H
  192.  *****************************************************************************/
  193.  
  194. disp_path(idx)         /* display a files dir path - only used in showall */
  195. int idx;
  196. {
  197.    gotorc(VOL_ROW,PATH_COL+1);         /* display the files pathname */
  198.    out_str(files[idx].dirp,65,' ');
  199. }
  200.  
  201.  
  202. /******************************************************************************
  203.                            D I S P _ S T A T U S
  204.  *****************************************************************************/
  205.  
  206. disp_status() {        /* display the status line */
  207.  
  208.    setvattrib(DIS_HEAD);
  209.    disp_rep_at(' ',SCREEN_COLS,STATUS_ROW,0);
  210.  
  211.    if (!help_display)
  212.       disp_str_at(" Press F1 for Help ",STATUS_ROW,SCREEN_COLS/2-10);
  213.  
  214.    setvattrib(DIS_NORM);
  215. }
  216.  
  217.  
  218. /******************************************************************************
  219.                         D I S P / C L R _ M S G
  220.  *****************************************************************************/
  221.  
  222. #define MSGLEN 25
  223.  
  224. disp_msg(cnt,m1)       /* display msg strings on the status line */
  225. int cnt;
  226. char *m1;
  227. {
  228.    int len = 0;
  229.    register char **mp;
  230.  
  231.    gotorc(STATUS_ROW,0);
  232.    setvattrib(DIS_HEAD);
  233.  
  234.    mp = &m1;                           /* display cnt msg strings */
  235.    for ( ; cnt; cnt--, mp++) {
  236.       disp_str(*mp);
  237.       len += strlen(*mp);
  238.    }
  239.  
  240.    if (len < MSGLEN)                   /* blank fill msg field */
  241.       disp_rep(' ',MSGLEN-len);
  242.  
  243.    setvattrib(DIS_NORM);
  244. }
  245.  
  246. clr_msg() {    /* clear msg field on status line */
  247.  
  248.    gotorc(STATUS_ROW,0);
  249.    setvattrib(DIS_HEAD);
  250.    disp_rep(' ',MSGLEN);
  251.    setvattrib(DIS_NORM);
  252. }
  253.  
  254.  
  255. /******************************************************************************
  256.  **                         C E N T E R _ T E X T                            **
  257.  **************************